MegaFLE X Editing Guide
=======================
Last updated 16th May 2011 (editor version 0.701)

Index:
 * 1. Introduction
 * 2. Basics
	* 2.1. Getting started
	* 2.2. How some things generally work
 * 3. Operation for windows under "Level" menu.
	* 3.1. Palette Editor
	* 3.2. SBD Editor
	* 3.3. Tile Table
	* 3.4. TSA Table
	* 3.5. Structure Table
	* 3.6. Screen Editor
	* 3.7. Enemy Editor
	* 3.8. Door Editor
 * 4. Scene Screen Mode
 * 5. Operation for windows under "Other" menu.
	* 5.1. Graphics Load Editor
	* 5.2. Text Editor
	* 5.3. Patches
 * 6. Notes on Level data formats
	* 6.1. Level - Main data
	* 6.1. Level - Palette Set
	* 6.2. Level - Scrolling
 * 7. Notes
	* 7.1. Choosing which game to hack
	* 7.2. Brief notes on Megaman 6 Scrolling

1. Introduction
=======================================================================================

	MegaFLE X supports Megaman 3, 4, 5 and 6.
	Support for MM6 is not as extensive as the other games,
	for that it can edit level graphics, enemy setup, palettes,
	but no direct scrolling editing.

	MegaFLE X is mostly a level editor, but it can edit things
	that are related to the whole game as well.

2. Basics
=======================================================================================

2.1. Getting started
---------------------------------------------------------------------------------------

	Once you open a ROM, you will see the main window, which has a lot of
	controls on it. Much of it is advanced functions which is not useful to 90%
	of users probably.
	For a start, you could open the Screen Editor to take a peek at the level.
	Its found by clicking the "Level" menu, then "Screen Editor".

	Windows for editing the current level is found under the Level menu. Windows that lets you edit things general to the game
	is found from the menu Other.

	Whenever you want to save changes to the ROM file, hit F5. It can
	also be done from the menu but this is the simpliest, and it can be
	done from all windows.
	F6 and F7 decreases/increases the current level and can also be
	used globally.

2.2. How some things generally work
---------------------------------------------------------------------------------------

	Where-ever palette colors are displayed as squares (like in the Palette Editor), you can usually always increase and decrease
	the color value by Left clicking or Right clicking. Sometimes, the palette has to be selected before you can do this,
	this means you must click once at the color before it can be changed.

3. Operation for windows under "Level" menu.
=======================================================================================

3.1. Palette Editor
---------------------------------------------------------------------------------------

	Overview
	--------

	This window is used to edit the level's palette. In the case of games except MM6,
	it also lets you change initialization of palette animations.
	Additionally, it contains an editor for the games' Palette Animation datas, plus
	a Weapon palette editor, letting you change the colors used for Mega Man for each
	weapon and gadget.

	The level palette can be modified in the top row of squares. First you must set a color as the active color to edit by
	clicking on it. Then, you Left-click to increase the color value or Right-click to decrease it.

3.2. SBD Editor
---------------------------------------------------------------------------------------

	What is with the name, is its an acronym for "Screen Bank Data". What that is supposed to be, i won't go into.

	Steps for simple use
	--------------------

	After the level screens has been imported (which is usually done automatically),
	you can draw TSA Blocks onto all the imported screens of the level.
	Click the "View Blocks.." button.
	In the TSA Table, choose the TSA Block you want to draw with
	(with left mousebutton). Then place it into the SBD Editor by left-
	clicking on the level screen.
	You can also hold down and move the cursor around.
	When you are done, click "Convert to Normal Data!".
	Then, after you save with F5, the changes will be written to the ROM.

	Object Editor (screen to the right)
	-----------------------------------

	You can have a total of 256 "objects", each made up of an assembly
	of the level's TSA Blocks. These objects can be "drawn" freely into the level.
	Click the "View Blocks.." button to open the TSA Table, which you can then
	use alongside the object editor to create objects.

	Left-click : Modify object set, place Current TSA Block.

	Right-click : Remove TSA Block from object set.

	Screen Editor (screen to the left)
	----------------------------------

	Left-click : Depends on option selected under "Left mousebutton brush:"
	
	Right-click : Depends on option selected under "Right mousebutton brush:"

	Explanation of options:

		Current Block: Place current TSA Block, selected from TSA Table.
		Place Object: Place current Object from the Object Editor.
		Object brush: Place TSA Blocks by drawing the current Object as a repeated pattern.
			Only one TSA is placed at once.
		Copy: What is below the mouse pointer, will become current TSA Block.
	
	Dealing with "Structure use past limit."
	----------------------------------------

	The reason for this error is that when the program tries to
	automatically generate data, it hits the limit and isn't
	able to convert your level properly.
	This may only happen with generating of Structures, not with the other data.

	In the dialog, choosing "Yes" will still perform the conversion,
	but beware that the level will most certianly become "messed up" at
	some part, and usually in a later part. This can *not* be seen in
	the SBD Editor itself, but it can be seen by browsing in the Screen Editor
	(or the Enemy Editor).

	Choosing "No" will not change the level. So any changes that you made
	with the SBD Editor (since you last hit "Convert to Normal Data!") will
	still be kept in it, but it will be lost if you quit MegaFLE.

	To work it out so that you can succesfully convert, in short words you may have
	to make the graphics design less complicated, or make the level shorter.
	The number of structures needed is in a relative way (Screens used *
	TSA Block patterns used). This means that the lesser TSA Blocks is
	used in the level, the lesser is the chance of hitting the limit.
	But, it also depends how they are placed together. If there are many
	repeated patterns of design in the level, it will usually use less
	Structures. For example, lets say there is a large Magnet
	used in the level graphics design, using 6 TSA Blocks placed together,
	making up a 32 * 48 pixel rectangle. If its used alot through the whole level,
	it will probably convert really well, and the number of Structures used
	for the magnet alone would be relatively small, since the Structures would be
	re-used plentifully.
	Unfortunately, there is usually more space for a level in Screen Presets than
	in Structures. One way to prevent being taken by suprise by this error would
	be to keep an eye on the Structure Table as the level is made in the SBD Editor.
	It can always be opened with Shift + R.

	If you are stuck with this error and what to do, and don't want to keep the
	program running until your next move, you can simply utilize the Save and Load
	functions under "Screen Data" in the menu.
	
	Closing the window
	------------------
	
	When you open the editor initially, it will automatically Import all the Screen Presets.
	This also happens when you change level, *if* the editor is already open.
	However, if you close the SBD Editor window, whatever changes you made will not be
	permanently lost. If you re-open it in the same session of running the editor program,
	then the data will be as when you closed the SBD Editor window.

3.3. Tile Table
---------------------------------------------------------------------------------------

	The Tile Table is used for two things. It is used to pick tiles when modifying
	TSA blocks in the TSA Table. Second, it is a tile editor.

	A tile is modified by first clicking on it, then you click the "->" button so
	that it gets loaded into the tile editor. You use the Left mouse button to set
	a pixel to the selected color. You can also Right-click, and the current color
	will be changed to that color. When you are finished painting, you
	use the "<-" button. The tile which has a frame around it will be overwritten.
	
	The buttons to the bottom-right affects the tile editor. They can be used to
	flip the whole tile Horizontally, Vertically, or rotate the tile 90 degrees clockwise.
	
	Palettes in the Tile Table has no effect on the level data. The palette designation
	for each tile is based on a calculation of which TSA Blocks the Tile is found in.
	The ability to change palette is to help tile editing only. If you overwrite a tile
	after changing the palette, the Tile Table will temporary remember the palette choice for that Tile,
	but it still has no effect on level data.

3.4. TSA Table
---------------------------------------------------------------------------------------

	This window lets you modify the properties of a TSA Block (a 16x16 pixel unit of level data).

	Table Functions
	---------------

	Mouse:
		Left: Select TSA Block as the current one. (use in conjunction with Structure Table or/and SBD Editor.
			Can also be used together with Door Editor.
		Right: Modify TSA Block with current Tile (use in conjunction with Tile Table or Middle mouse button).
		Middle: Set the Tile below the pointer as the current Tile. (It will not be updated in the Tile preview in this
			window, it has just not been programmed in.)


3.5. Structure Table
---------------------------------------------------------------------------------------

	Functions
	---------

	Mouse:
		Left: Set the Structure below mouse pointer as the current Structure. (use in conjunction with Screen Editor)
		Right: Modify Structure with current TSA Block (use in conjunction with TSA Table, or just Middle mouse button)
		Middle: Set the TSA Block below the pointer as the current TSA Block.

3.6. Screen Editor
---------------------------------------------------------------------------------------

	Game Screen
	-----------

	Left-click : Places the current Structure on the screen. (use in conjunction with Structure Table)

	Right-click : Current Structure becomes the Structure which is used where you click.

	Shift + Left-click: The Structure below the mouse pointer will be Increased by 1.
	
	Shift + Right-click: The Structure below the mouse pointer will be Decreased by 1.

	Mega Man 4 Specific
	-------------------
	
	BG Palette: For Mega Man 4, this value may be confusing since it works differently from MM3 and 5.
	A value of 0 means to *not* change palette set, in other words, the palette is left alone.
	A value of 1 or more will swap the palette set. 1 still means that it will change to the second
	palette set.
	This means that since the start of the level, if the palette set has been changed, you can't change
	back to palette set 0 after that. Luckily, there are plenty of space for palette sets, so you can
	copy it to a different set. 

	Mega Man 5 Specific
	-------------------

	Boss Door Effect: If this is checked, then the game will do the door opening sequence *before* you
		enter the Scroll Map, and it will also do the door closing when Mega Man has entered it.
		In relation to the boss chamber of a level, the flag should be set for the boss chamber
		and the screen just before it (if there is a passageway to the boss.)

	Scroll Back Enable: If this flag is set, Mega Man may go back to the previous Scroll Map (by going to
		the left edge of the scroll section).

3.7. Enemy Editor
---------------------------------------------------------------------------------------

	Level and Enemy display functionality
	-------------------------------------

	Mouse:
		When you hover the mouse close to an enemy, it will be selected as the current one.
	
		Left-click : Move the current enemy to location clicked on. You can also move enemies
			to a different screen this way.

		Right-click : "Quantisize" enemies to 4-pixel step.

	Keyboard:

		Insert: Insert a new enemy below the mouse pointer (or at random point). It will have Id 00.
		Delete: Delete the current enemy.

		Arrow Keys: Move Enemy by 1 pixel.

		W: Tune Enemy Id + 16
		S: Tune Enemy Id - 16
		D: Tune Enemy Id + 1
		A: Tune Enemy Id - 1

	Mega Man 3 and 4 Specific
	-------------------------

		"Enemies Using GFX:"
		--------------------
		This is a calculated list of enemies which can be used with the graphics set chosen for the Scroll Map.
		(Enemies that can be used without showing messed up graphics). Its not guaranteed to be accurate.
		For Mega Man 4, if the Graphics Load Editor is used, the list will not get different values
		according to what was changed with it.
		If you click in the list, the current enemy will be changed to that one.
		
		"Find GFX Set for Enemies in Scroll Map"
		---------------------------------------
		This feature will attempt to find graphics sets which are compatible with the used enemies in the entire
		Scroll Map / scroll section. It will browse through the ones it finds. If there are enemies that cannot
		be used together, it will set to the graphics for the first enemie(s).
		
		"Find Automatically"
		--------------------
		Like the button, but it will do it automatically whenever you change the Id of an enemy.

	Mega Man 5 Specific
	-------------------

		"Sprite Palette Set"
		--------------------

		This value changes the palette set used for enemies, and you may use a different one for each Scroll Map
		part of the level. There are 64 preset. Please note that these Palette Sets has the power to change other
		things as well, which is changing the BG Palette set and changing the CHR Bank for the bottom half of
		the Level tiles. To check this and modify this data, open the Screen Editor.

	Enemy Sprite Palette
	--------------------

	You can change the colors of the enemy sprite palette and do changes to ROM.
	Left-click increases color value, Right-click decreases color value.

	Insert Sprite Group
	-------------------

	Clicking this button will open a window which lets you insert a preset of multiple enemies at once, which are known to
	be used together in groups. These are either used for mini-bosses or bosses in the later stages of the game.
	There are presets for Mega Man 3, 4 and 5.

	"Animate Sprites"
	-----------------

	This is a feature implemented mostly for fun. It will animate most sprites in the editor itself.

	Effect Sprite editing
	---------------------

	This may be the least visible part of the whole editor. Effect Sprites refers to specific Enemy Ids in Mega Man 4 and 5,
	which are not enemies or items, but are simply invisible objects that can change or affect the graphics in different ways.
	On the level display, Some enemy Ids will show as a rectangle with the letters "Eff:" and a hex number. Some of them
	will show like that but is still not the kinds of Ids that can be edited. The ones that can are always in the C0 to FF
	range of Id's.
	In gameplay, they take effect when the screen's left or right edge are at the point of the sprite's X coordinate. In
	other words, when they would become visible on the screen if they were normal enemies. If they are already in the area of
	a level you can see after Mega Man scrolls to a new section or when the gameplay starts, they take effect immediatedly.

		- For Mega Man 4 mode -
		There are two kinds. The first type can start a Palette Animation, the other one can load 3 colors somewhere
		into the background palette.
		In both cases, you can select the area of the palette it has effect, by using the option buttons in the top of
		the frame of the effect sprite editor. They are colored with the active colors of the level.
		
3.8. Door Editor
---------------------------------------------------------------------------------------

	Notes
	-----

	The 3 games which the Door Editor is supported for, has each a different way to decide how doors work.
	Mega Man 3 is the most complex. The good part is you may place multiple doors at two points in a level,
	and each and every opening or closing door may have different placements and graphics.
	Mega Man 4 is more simple. Each level can only have one "kind" of opening and closing door.
	Mega Man 5 is even more simple. Instead of you having to specify the palette for each TSA, the Palette data
	is loaded from the TSA Block data of the level itself. For closing doors, there is only 1 TSA data.
	The game assumes that its used to draw all 3 pieces of the door.

	How to decide where in the levels doors are triggered
	-----------------------------------------------------
	
		Mega Man 3
		----------
		As far as i know, this is entirely decided by the "Screen of Door Point" value, for each
		Door Point. The Screen value is then the first possible screen that a door can be Opened.
		
		Mega Man 4
		----------
		It is decided by the Scrolling data. For the Scroll Map Position of a boss chamber, plus
		any passageway to the boss, use a Scroll Map Position that uses Scroll Type #3.
		
		Also, for the TSA Blocks which represents a closed door, you must use Type "5: Doors".
		
		Mega Man 5
		----------
		Its decided by Scrolling data. For the Scroll Map Position of a boss chamber, plus the
		passageway to the boss, make sure "Boss Door Effect" is checked in the Screen Editor.

	Moving the Doors
	----------------

	The doors are moved by simply clicking in the big grid with the mouse. You select between moving
	the closing door and the opening door in the "What to move" frame.

	Peculiarities
	-------------

	For Mega Man 3 and 4 : Opening doors cannot be moved to a collumn which is Even-numbered. The palette updating will not function properly.
	This is not a bug with the editor but a limitation with the games. Likewise, Closing doors cannot be moved to a collumn which is Odd-numbered.

	For Mega Man 5 : Closing doors is involved in the game physics. This means that wherever the closing door is placed, it will act like a wall.

4. Scene Screen Mode
=======================================================================================

	"Scene Screen" is the term used for screens which are not part of the levels, such as
	the Title Screen.

	In the Scene Screen mode, you may change the current level and screen to find what you specifically
	want to edit, and the editor will load the palette and graphics normally used for that screen.
	In addition to normal editing using the Screen Editor or SBD Editor and TSA Table,
	you can modify the palette directly.
	Also, there are additional things you may change in the Misc. Editor, which lets you directly change
	what graphics are loaded in-game for a scene screen. Depending on the game you edit, there are two modes:

	Mega Man 4: You may change the Primary Graphics Load used to load graphics for the screen. Except in some cases,
	it will be grayed out because in those cases, changing the value would change the actual Bank the screen is loaded from..
	so to avoid complications those can't be changed. If you really want to change them anyway, it is decided by values
	somewhere in megafle.dat.

	Mega Man 3 and 5: You may change the CHR Banks loaded for a scene screen.

	Screen Presets
	--------------

	For Mega Man 3 and 5, there are no Screen Preset values used for the Scene screens.
	But Mega Man 4 uses them, which is why you can modify the data in the Screen Editor just as you would do with normal
	levels. It will not change which tiles or palette is used for a screen, it will only change which screen preset
	will be drawn.

	Extra Palettes
	--------------

	In some cases, there are more palette data right *after* the one loaded for the Scene Screen.
	You may try use the palette selecter in the "Palette Set change" frame to look for them. When in Scene Screen mode,
	it selects the 16-byte chunk of palette data relative to the offset (unlike normal editing, where each Palette Set is 20 bytes).

5. Operation for windows under "Other" menu.
=======================================================================================

5.1. Graphics Load Editor
---------------------------------------------------------------------------------------

	This is a window for editing data specific to Mega Man 4.

	Operation notes
	---------------

	Graphics Load presets may or may not have a sprite palette. If it doesn't already when you browse the presets,
	"Has Sprite Palette" will be unchecked, the NES palette values will be grayed out and changing the colors are disabled.

	If you turn "Has Sprite Palette" on, it will add a sprite palette to the preset, which makes it use 7 more bytes (yes seven).
	The palette will be filled with a template of values.

	If you turn "Has Sprite Palette" off, it will remove 7 bytes of data and the rest should be obvious.

	"Load as current level graphics"
	--------------------------------

	This button will temporarily load a tileset into the memory of the editor, based on a "Primary Gfx Load" preset.
	It does no changes to the rom. It can be used to just see how a level looks with it, and to edit the tiles in
	the Tile Table.

5.2. Text Editor
---------------------------------------------------------------------------------------

	This has not been finished. You may edit the Nametable Location of the lines (in some cases), which decides where on the
	screen text shows up.

5.3. Patches
---------------------------------------------------------------------------------------

	For some of the supported games, there is implemented some fixes or enhancements that can be patched to the ROM. This is found
	in the Patches window. The patch source files are found as plain text files in the subfolder "Patches". If you are interested in
	creation one, see "template.txt" for some guidance. There are no plans to release more patches that can be added onto
	the editor. Most of the ones i made are based on things that i happened to note down when aiding other hackers.

	If you apply a patch, you need to close the window and then save the changes (from the menu or pressing F5), for it to
	be saved to the ROM file.

6. Notes on Level data formats
=======================================================================================

6.1. Level - Main data
----------------------

	Megaman 3, 4, 5, and 6 follow a standard format of how level
	graphics are built up. Levels have a standard set of 256 tiles
	(8x8 pixel Pattern Table tiles). These tiles can change through
	the levels, and can also be animated (in Mega Man 5).

	TSA Blocks - The smallest unit of level data. These define a
	graphics preset for a 16x16 pixel area of the level,
	plus block Type. There are space for 256 different ones.
	Each are built up of 4 tiles, and can use a different Palette.
	The palette can be a value from 0 to 3.
	The Block Type defines the substance of the block for gameplay
	physics. This can be a value from 0 to 15. In each game, not
	all of the Type values are used.

	Structures - A larger unit of level data. It defines a graphics
	preset for a 32x32 pixel area of the level.
	These are built up using 4 TSA Blocks from the TSA tables,
	therefore, each Structure uses 4 bytes of data to determine
	the TSA Block indexes its made up of.
	There are space for a total of 256 Structures as well.

	Screen Presets - These are the presets of unique screens
	in a level. These are defined by a 8 times 8 big array of Structures,
	which is the size needed to fill one screen.
	Each Screen Preset uses 64 bytes, each refering to a Structure index.
	Screen Presets can be re-used through a level but with different
	enemy/item usage, different palettes, and so on. In the original
	ROMs of Megaman 3, 4 and 5, the arrangement is usually straightforward.
	Mega Man 6 does not use screen presets.
	The number of Screen Presets is different depending on the game
	in question, but its usually around 32.

6.2. Level - Palette Set
------------------------

	Levels in Megaman 3, 4, and 5 has one or more palette sets
	which are associated with a single level. Each palette set consist of
	palette color values for all BackGround colors, plus 4 bytes of
	info regarding palette animations.
	The first palette set is always loaded when MM begins at the beginning
	of the level.
	The level can be made to change palette set mid-level when MM enters
	a new section. Also, when MM dies and goes back to a Continnue point, a
	different Palette set than the first may be loaded. 
	Megaman 6 works entirely differently.

6.3. Level - Scrolling
----------------------

	This format is used in Megaman 3, 4 and 5. MM6 has a completely different
	scrolling system. It uses Sprites (Enemies) to control scrolling.

	The information that makes up the level scrolling is a series of bytes.
	Basically, each byte has two types of information.
	The upper nibble, bits 0 to 2, tells the scrolling direction.
	The lower nibble, bits 4 to 7 (usually), tells how many level screens to scroll
	in the same direction, how many screens until the next byte.
	Each byte reveals information for a section of the level, which is referred to
	as "Scroll Map Position". The Scroll Map Position index refers to the byte index
	into scroll data.

	The game starts with the first scroll byte. When a new section in
	the level is reached, it checks the next scroll byte.
	MegaFLE X tells the meaning of the upper bits (Direction), and also the 
	# of Screens. But the way it works is still easily confusing.
	A scroll byte can be said to tell which direction MM must proceed
	in order to reach the next part of the level.
	If the 2nd scroll byte is "Down-Right" it means the player must proceed
	down to actually get to the 2nd scroll section, and from there, must
	go 1 or more screens to the right.
	If you are to make a stage that scrolls Right some screens and then
	down, the "Down" indicator must be in the 2nd scroll byte, either as
	"Down" or "DownRight".

	Next, some examples of stage layouts and a corresponding data setting.
	S represents Megaman's starting point in the level. The digits represents
	screens in the level from the starting point. The actual value of the digits
	represents the Scroll Map Position. 0 means the first, 1 is the next and so on.
	The "->" arrow is the direction which MM will go further in the level.

	(If you aren't looking at this with a Monospaced font, do it now.)

	Right to Up-Right scrolling:

			   1-1-1-1 ->
			   |
		S> 0-0-0-0-0

		Scroll Map Position:
		0: $24 (Right * 5)
		1: $A3 (UpRight * 4)

	Right-Down to Down-Right:

		S> 0-0-0-0
			 |
			 1-1-1-1-1 ->

		Scroll Map Position:
		0: $23 (Right * 4)
		1: $64 (DownRight * 5)

	Right, Down, Right:

		S> 0-0-0-0
			 |
			 1
			 |
			 2-2-2-2-2 ->

		Scroll Map Position:
		0: $23 (Right * 4)
		1: $40 (Down * 1)
		2: $64 (DownRight * 5)

	Right, Up, Right:

			 2-2-2-2 ->
			 |
			 1
			 |
		S> 0-0-0-0
		
		Scroll Map Position:
		0: $23 (Right * 4)
		1: $80 (Up * 1)
		2: $A3 (UpRight * 4)

	Connected Right-scroll sections:

		S> 0-0-0-0-1-2-2-3-3-3-3 ->

		Scroll Map Position:
		0: $23 (Right * 4)
		1: $20 (Right * 1)
		2: $21 (Right * 2)
		3: $23 (Right * 4)
	
	Note that for Up, in order for MM to get to a screen above him, you must place a ladder
	that connects the bottom and top screens. (This seems to be true for every MM game).

	For Down or Up, if the screen count is more than 1, note that screens will be "split up"
	either way, so that MM must go past the top or bottom of a screen before scrolling happens.

	More information on Bit 3 of scroll bytes: (Advanced)
	Bit 3 is used for different purposes. In MM4 it indicates that the
	scroll section is part of the boss chamber or path to boss. When its set, it will
	do a door opening sequence before entering it, and a door-close
	sequence when MM has just entered it.
	In MegaFLE, this is chosen by tuning the "Scroll Type" value to
	3, which is described as "(Boss doors (MM4) x something)".
	In MM5, Bits 3 towards 7 makes the screen count, so each scroll
	section in that game may be up to 32 screens long, compared to MM3 and MM4 which
	is limited to 16 screens for a Scroll Map.
	Parts of Waveman's stage in MM5 has sections longer than 16 screens.

7. Notes
=======================================================================================

7.1. Choosing which game to hack
---------------------------------------------------------------------------------------

	The games and Sprite graphics loading
	-------------------------------------

	Megaman 5 has a nice way of dealing with enemy/sprite graphics. You
	cannot have all kinds of combinations of enemies on the same
	screens at the same time, but there is no "graphics sets".
	You can place any enemy you want using the editor, and the
	game takes care of loading the graphics automatically.
	This is the same for Megaman 6, and it is probably even more "free" (loading
	is just done a little differently, since it uses CHR-RAM instead of CHR-ROM).
	For Megaman 3 and 4 this is much more constricted. Within a Scroll Map,
	you can only have one preset of enemies' graphics.
	But you can use the editor to edit the enemy graphics sets for both games.

	Number of levels comparison
	---------------------------

	Megaman 3: 18 levels, using 16 SBD banks. (two levels share data)
	Megaman 4: 16 levels/SBD banks.
	Megaman 5: 16 levels, using 14 SBD banks. (two levels share data)

	Length of levels comparison
	---------------------------
	Megaman 3 has max 32 screen presets, and
		the level can be 64 screens long.
		There is space for 16 scroll map positions.
	Megaman 4 has max 32 screen presets,
		the level can be 48 screens long.
		There is space for 16 scroll map positions.
	Megaman 5 has max 40 screen presets, and can be a total of 80 screens long.
		There is 24 scroll map positions.

	Number of enemies or items comparison
	-------------------------------------
	Megaman 3 and 6 allows as many as 256 # of enemies in a level, while Megaman 4
	and 5 allows 128 maximum. 128 should be more than enough however.

7.2. Brief notes on Megaman 6 Scrolling
---------------------------------------------------------------------------------------

	Megaman 6 uses a way of doing scrolling which is a different
	system from the way it is done in the 3 other supported games.
	It is done by sprites. These can be seen and edited in
	the Enemy Editor. They are all sprites with green frames
	with the "Type" value $80. For these, the value
	"Y Position" has a special use, and the "X Position" value seems
	to have a exclusive use as well. The Y position refers to
	an index of scrolling data. This decides palette changes,
	BG CHR changes, starts CHR animations,
	and most importantly it defines how the level scrolls.
	The sets are re-used, but there are several of them.

=======================================================================================